Typically, an application programming interface provides a user with the ability to perform a certain protocol. For example, a user may be provided with the ability to atomically broadcast messages to all of the other users in the computer system or the user may be provided with the ability to synchronize events.
Each protocol typically has its own application programming interface. Thus, the user needs to be familiar with various interfaces in order to perform various techniques. This proves cumbersome to the user. Thus, a need exists for an application programming interface that can unify multiple protocols into one integrated and easy to use framework. In particular, a need exists for a single application programming interface that can unify communications protocols and synchronization protocols.